package cn.zqy.demo2.day12FunctionalInterface.Supplier;

import java.util.function.Supplier;
/*
    练习：求数组元素最大值
        使用Supplier接口作为方法参数类型，通过Lambda表达式求出int数组中的最大值。
        提示：接口的泛型请使用java.lang.Integer类。
 */
public class Demo02SupplierTest {
    public static void main(String[] args) {
        //定义一个int类型的数组,并赋值
        int[] arr = new int[]{42, 96, 65, -5, -66, 89};

        //调用getMax方法,方法的参数Supplier是一个函数式接口
        int max = getMax(new Supplier<Integer>() {
            @Override
            public Integer get() {
                //获取数组的最大值,并返回
                //定义一个变量,把数组中的第一个元素赋值给该变量,记录数组中元素的最大值
                int m = arr[0];
                for (int i : arr) {
                    if (i > m) {
                        m = i;
                    }
                }
                return m;
            }
        });
        System.out.println("最大值：" + max);
    }
    //定义一个方法,用于获取int类型数组中元素的最大值,方法的参数传递Supplier接口,泛型使用Integer
    public static int getMax(Supplier<Integer> sup){
        return sup.get();
    }
}
